package com.attilax.ocr;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.log4j.Logger;

import com.attilax.util.FileCacheManager;

// r12 import aaBaolilo.ImageDemo;



 
 
import com.attilax.util.FileUtil;

 

public class OcrXV2t55 {

	public static void main(String[] args) throws Exception {
      String jpg="D:\\0img\\Screenshot_2019-05-09-18-57-58-500_com.tencent.mm.cut.png";
  	String valCode = new OcrXV2t55().getTxtWithCache("D:\\0workspace\\Tesseract", jpg);
System.out.println(valCode);
	}
//	public static String getCaptch(String jpg) {
//		String baseName=filex.getFileName_noExtName(jpg);
//		File f=new File(jpg);
//		String parentPath=f.getParentFile().getAbsolutePath();
//		String newFile=parentPath+"\\"+baseName;
//		String newfile2=newFile+".txt";
//		
//		
//String exepath=pathx.classPathParent()+"\\Tesseract\\tesseract.exe";
//		String cmd="\""+exepath+"\"  \""+jpg+"\" \""+newFile+"\"  -psm 7";
//		System.out.println(cmd);
//	List<String> li=new ArrayList();
//	li.add(exepath);li.add(jpg);li.add(newFile);li.add("-psm");li.add("7");
//		
//		String ret=CmdX.exec_EX(cmd,li);
//		String t=filex.read_NSF(newfile2).trim();
//		return t;
//		
//	}
//	

	public static String nextChar(String baseName) {
		byte[] ca=baseName.getBytes();
		int now=ca[0];
		now++;
		char c=(char) now;
		
		return String.valueOf(c);
	}
	/**
	attilax    2016楠烇拷11閺堬拷1閺冿拷  娑撳宕�9:17:28
	 * @param string
	 * @param jpg
	 * @return
	 */
//	public String getCaptch(String tesseract_orcMaindir, String jpg) {
//		String baseName=filex.getFileName_noExtName(jpg);
//		File f=new File(jpg);
//		String parentPath=f.getParentFile().getAbsolutePath();
//		String newFile=parentPath+"\\"+baseName;
//		String newfile2=newFile+".txt";
//		
//		
//String exepath=tesseract_orcMaindir+"\\tesseract.exe";
//		String cmd="\""+exepath+"\"  \""+jpg+"\" \""+newFile+"\"  -psm 7";
//		System.out.println(cmd);
//	List<String> li=new ArrayList();
//	li.add(exepath);li.add(jpg);li.add(newFile);li.add("-psm");li.add("7");
//		
//		String ret=CmdX.exec_EX(cmd,li);
//		String t=filex.read_NSF(newfile2).trim();
//		return t;
//	}
//
//	public String getCaptch_cn(String tesseract_orcMaindir, String jpg) {
//		String baseName = filex.getFileName_noExtName(jpg);
//		File f = new File(jpg);
//		String parentPath = f.getParentFile().getAbsolutePath();
//		String newFile = parentPath + "\\" + baseName;
//		String newfile2 = newFile + ".txt";
//
//		String exepath = tesseract_orcMaindir + "\\tesseract.exe";
//		String cmd = "\"" + exepath + "\"  \"" + jpg + "\" \"" + newFile + "\"  -psm 7";
//		// System.out.println(cmd);
//		List<String> li = new ArrayList();
//		li.add(exepath);
//		li.add(jpg);
//		li.add(newFile);
//		li.add("-psm");
//		li.add("7");
//		li.add("-l");
//		li.add("chi_sim");
//
//		String ret = CmdX.exec_EX(cmd, li);
//		String t = filex.read_NSF(newfile2).trim();
//		return t;
//	}
	static org.apache.log4j.Logger logger = Logger.getLogger(OcrXV2t55.class);
	
	public String getTxtWithCache(String orcMaindir_tesseractDir, String jpg) throws Exception {
		
		
		String baseName =FilenameUtils.getBaseName(jpg);
		File f = new File(jpg);
		String parentPath = f.getParentFile().getAbsolutePath();
		String newFile = parentPath + "\\" + baseName;
		String txtFile = newFile + ".txt";
		FileCacheManager.dir=parentPath;
		if(FileCacheManager.hasKey(txtFile))
			return FileCacheManager.get(txtFile); 
		else
		{		 
			String txt = getTxt(orcMaindir_tesseractDir,jpg);
		//	FileCacheManager.set(jpg,txt);
			return txt;
		}
	}
	
	public String getTxt(String orcMaindir_tesseractDir, String jpg) throws Exception {
		String baseName =FilenameUtils.getBaseName(jpg);
		File f = new File(jpg);
		String parentPath = f.getParentFile().getAbsolutePath();
		String newFile = parentPath + "\\" + baseName;
		String newfile2 = newFile + ".txt";

		String exepath = orcMaindir_tesseractDir + "\\tesseract.exe";
		String cmd = "\"" + exepath + "\"  \"" + jpg + "\" \"" + newFile
				+ "\" "; // -psm 7
	//	System.out.println(cmd);
		logger.info(cmd);
		List<String> li = new ArrayList();
		li.add(exepath);
		li.add(jpg);
		li.add(newFile);
		li.add("-l");
		li.add("chi_sim");
	//	 System.out.println( AtiJson.toJson(li));
	//	li.add("-psm");
	//	li.add("7");
			//not use cmd .only li..
		String ret = ProcessUtil.exec_EX(cmd, li);
		logger.info(newfile2);
		String t =FileUtils.readFileToString(new File(newfile2),"utf8");
				//filex.read_NSF(newfile2).trim();
		return t;
	}
	
//	public String getTxt_en(String orcMaindir, String jpg) {
//		String baseName = filex.getFileName_noExtName(jpg);
//		File f = new File(jpg);
//		String parentPath = f.getParentFile().getAbsolutePath();
//		String newFile = parentPath + "\\" + baseName;
//		String newfile2 = newFile + ".txt";
//
//		String exepath = orcMaindir + "\\tesseract.exe";
////		String cmd = "\"" + exepath + "\"  \"" + jpg + "\" \"" + newFile
////				+ "\" "; // -psm 7
//		//System.out.println(cmd);
//		List<String> li = new ArrayList();
//		li.add(exepath);
//		li.add(jpg);
//		li.add(newFile);
//		 
//		 System.out.println( AtiJson.toJson(li));
//	//	li.add("-psm");
//	//	li.add("7");
//			//not use cmd .only li..
//		String ret = CmdX.exec_EX("", li);
//		String t = filex.read_NSF(newfile2).trim();
//		return t;
//	}
	
//	public static String exec(String cmd) {
// 		try {  
// 		   // 閹笛嗩攽 CMD 閸涙垝鎶�  
// 		   Process process = Runtime.getRuntime().exec(cmd);  
// 		//  process.geto
// 		   // 娴犲氦绶崗銉︾ウ娑擃叀顕伴崣鏍ㄦ瀮閺堬拷  
// 		   BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));  
// 		     String r="";
// 		   // 閺嬪嫰锟界姳绔存稉顏勫晸閸戠儤绁﹂獮鑸靛瘹鐎规俺绶崙鐑樻瀮娴犳湹绻氱�涙鐭惧锟�  
// 		//   FileWriter fw = new FileWriter(new File("C:/Users/Administrator/Desktop/CmdInfo.txt"));  
// 		     
// 		   String line = null;  
// 		     
// 		   // 瀵邦亞骞嗙拠璇插絿  
// 		   while ((line = reader.readLine()) != null) {  
// 		    // 瀵邦亞骞嗛崘娆忓弳  
// 		  r=r+(line + "\n");  
// 		   }  
// 		     
// 		 
// 		   // 閸忔娊妫存潏鎾冲毉濞达拷  
// 		   process.getOutputStream().close();  
// 		     
// 		   System.out.println("cmd ext finish!");  
// 		   return r;
// 		  } catch (Exception e) {  
// 			 return core.toJsonStrO88(e);
// 		  }
//		
// 	}  


}
